// 张新同的个人数据库

// 1、向指定数组内，指定位置，添加指定内容的功能
function insert(arr, n, date) {
    for (i = arr.length; i > n; i--) {
        arr[i] = arr[i - 1];
    }
    arr[n] = date
}

// 2、向指定数组，删除指定位置的数据的功能
function remove(arr, n) {
    for (var i = n; i < arr.length; i++) {
        arr[i] = arr[i + 1]
    }
    arr.length -= 1;
    return arr.length;
}

// 3、冒泡法升序排列
function asc() {
    for (i = 0; i < arr.length - 1; i++) {
        for (j = 0; j < arr.length - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {                   // j       j+1
                var n = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = n;
            }
        }
    }
    console.log(arr)
}
// var arr=[102,4,7,8,5,24,9,10,-166]
// asc();                   //使用时赋值并调用函数


// 4、冒泡法降序排列

function desc() {
    for (i = 0; i < arr.length - 1; i++) {
        for (j = 0; j < arr.length - 1 - i; j++) {
            if (arr[j] < arr[j + 1]) {                   // j       j+1
                var n = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = n;
            }
        }
    }
    console.log(arr)
}
// var arr=[102,4,7,8,5,24,9,10,-166]
// desc();


// 5、编写函数has(arr , 60) 判断数组中是否存在60这个元素，返回布尔类型
// 判断一组数据中是否有重复的数据

        function has(arr, d){
            for(var i=0;i<arr.length;i++){
                if(arr[i] === d){
                    return true;
                }
            }
            return false;
        }
    
        // var arr2 = [10,20,30,40,50,60];
        // var res = has(arr2, 60);
        // console.log(res);
        // console.log(arr2);


// 6、编写函数norepeat(arr) 将数组的重复元素去掉，并返回新的数组
        // 利用前面封装好的去重函数has

        function norepeat(a){               
            var newArr = [];                         // 先创建一个新数组
           
            for(var i=0;i<a.length;i++){             // 拿到老数组中的每个数据
                
                if(!has(newArr, a[i])){              // 判断新数组中是否存在老数组中的数据，不存在
                    
                    newArr.push( a[i] );             // 将老数组的这个数据，添加到新数组
                }
            }
            
            return newArr;                           // 返回新数组
        }
        
    // var arr3 = [1,2,3,4,5,4,3,2,1,1,1];
    // console.log(arr3);
    // var res = norepeat(arr3);
    // console.log(res);
    // console.log(res === arr3);
    // console.log(arr3);



// 7、范围随机数
    function random(a,b){
        return Math.round(Math.random()*(a-b)+b);
    }
            // 两个数的大小、顺序(谁前谁后)都没有关系


// 8、获取非行内样式的兼容封装
    function getStyle(ele, attr){
        if(ele.currentStyle){
            return ele.currentStyle[attr];
        }else{
            return getComputedStyle(ele)[attr]
        }
    }
// 9、获取事件对象
    // 正常浏览器：事件处理函数的第一个参数
    // IE浏览器：在事件处理函数中通过window.event获取
    var e=eve||window.event

// 10、获取键码
    // 正常浏览器：e.keyCode
    // IE浏览器：e.which
    var code=e.keyCode||e.which

// 9、阻止事件冒泡的封装
    function stopBubble(e){
        if(e.stopPropagation){
            e.stopPropagation()
        }else{
            e.cancelBubble = true;
        }
    }

// 10、监听式绑定事件的兼容
    function addEvent(ele, type, cb){
        if(ele.attachEvent){
            ele.attachEvent("on"+type, cb)
        }else{
            ele.addEventListener(type, cb)
        }
    }
// 11、监听式删除事件的兼容
    function removeEvent(ele, type, cb){
        if(ele.detachEvent){
            ele.detachEvent("on"+type, cb)
        }else{
            ele.removeEventListener(type, cb)
        }
    }

// 12、阻止默认事件
    function stopDefault(e){
        if(e.preventDefault){
            e.preventDefault();
        }else{
            e.returnValue = false;
        }
    }

// 13、获取事件目标
    function target(eve){
        var e = eve || window.event;
        var targrt = e.target || e.scrElement;
    }

